package org.langqiao.io.file;

import java.io.*;

/**
 * 带过滤器的 文件名列表
 * @author YMY
 *
 */
public class DirFilter implements FilenameFilter {//类声明过滤器接口
	//文件名前缀，文件扩展名
	private String prefix="",extension="";
	//filterstr指定过滤串，dir指定目录
	public DirFilter(String filterstr,File dir) {
		filterstr = filterstr.toLowerCase();
		int i = filterstr.indexOf('*');//寻找通配符
		if(i>0){
			//获得*之前的字符窜
			this.prefix = filterstr.substring(0,i);
		}
		int j = filterstr.indexOf('.');
		if(j>0){
			this.extension = filterstr.substring(j+1);//获得.之后的文件扩展名字符窜
			if(this.extension.equals("*"))//识别"*.*"
				this.extension="";
		}
		System.out.println(dir.getAbsolutePath()+"目录中，"+filterstr+"文件如下： ");
		String[] filename = dir.list(this);//获得指定目录中带过滤器的文件名列表
		for(i=0;i<filename.length;i++) {
			System.out.println(filename[i]);
		}
		
	}
	public DirFilter() {
		this("*.*",new File(".",""));
	}
	//实现过滤操作
	public boolean accept(File dir,String filename) {
		//文件名字符窜转换成为小写字母
		filename = filename.toLowerCase();
		return filename.startsWith(prefix)&&filename.endsWith(extension);//文件前缀，扩展名匹配
	}
	public static void main(String[] args) {
		new DirFilter("*.java",new File(".","src"));
	}
}
